\chapter{GCC}
\section{16位代码生成}
\section{sections}
\subsection{使用section指令提高性能}
vmlinux被人为的分成了非常多个段，例如__init __exit等等。如果仅仅是简单的生成一个可以运行的内核，不使用这些段也是没有问题的。那么这些段指令为什么还会频繁的出现在代码当中。

CPU有一个prefetch的机制，能够预先的载入一些指令到缓存，此举能够大大的提高效率。为了利用CPU这个特性，内核也希望能够将相关的代码放的尽量的靠近，这样能够提高cache命中率。

还有一个原因就是逻辑原因了，从section的命名也可以猜到，那些是初始化阶段的等等，都名捕无误的告诉了我们这些代码的用处。


\subsection{技巧}
